﻿using ExcellentProjectPlus.Dominio.Cuestionarios.Entidades;
using ExcellentProjectPlus.Dominio.Cuestionarios.Repositorios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExcellentProjectPlus.Dominio.Cuestionarios.Servicios.CuestionarioPreguntas
{
    public class ServicioDeAdministracionDeCuestionarioPreguntas
    : IServicioDeAdministracionDeCuestionarioPreguntas
    {
        #region Atributos
        IUnidadDeTrabajoCuestionarios _unidadDeTrabajo;
        #endregion

        #region Constructores
        public ServicioDeAdministracionDeCuestionarioPreguntas(IUnidadDeTrabajoCuestionarios unidadDeTrabajo)
        {
            _unidadDeTrabajo = unidadDeTrabajo;
        }
        #endregion
        public PreguntaCuestionario ObtenerCuestionarioPreguntaPorId(int id)
        {
            return _unidadDeTrabajo.RepositorioCuestionarioPreguntas.ObtenerPorId(id);
        }
        public void AgregarCuestionarioPregunta(PreguntaCuestionario cuestionariopregunta)
        {
            var cuestionario = _unidadDeTrabajo.RepositorioCuestionarios.Obtener(c => c.IdCuestionario == cuestionariopregunta.IdCuestionario).FirstOrDefault();

            _unidadDeTrabajo.RepositorioCuestionarioPreguntas.Agregar(cuestionariopregunta);
            cuestionario.NumeroPreguntas += 1;
            cuestionario.CalificacionMaxima += cuestionariopregunta.Calificacion;
            _unidadDeTrabajo.RepositorioCuestionarios.Modificar(cuestionario);
            _unidadDeTrabajo.Confirmar();
        }
        public void ModificarCuestionarioPregunta(PreguntaCuestionario cuestionariopregunta)
        {
            _unidadDeTrabajo.RepositorioCuestionarioPreguntas.Modificar(cuestionariopregunta);
            _unidadDeTrabajo.Confirmar();
        }
        public void EliminarCuestionarioPregunta(PreguntaCuestionario cuestionariopregunta)
        {
            _unidadDeTrabajo.RepositorioCuestionarioPreguntas.Eliminar(cuestionariopregunta);
            _unidadDeTrabajo.Confirmar();
        }
        public List<PreguntaCuestionario> ObtenerCuestionarioPreguntas(int idCuestionario)
        {
            return _unidadDeTrabajo.RepositorioCuestionarioPreguntas.ObtenerCuestionarioPreguntas(idCuestionario);
        }

        public void EliminarPreguntaCuestionario(int idCuestionario, int idPregunta)
        {
            var cuestionarioPregunta = _unidadDeTrabajo.RepositorioCuestionarioPreguntas.Obtener(cp => cp.IdCuestionario == idCuestionario && cp.IdPregunta == idPregunta).FirstOrDefault();
            if (cuestionarioPregunta != null)
            {
                _unidadDeTrabajo.RepositorioCuestionarioPreguntas.Eliminar(cuestionarioPregunta);
                _unidadDeTrabajo.Confirmar();
            }
        }
    }
}
